home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 708 / intuisup / intuisup42.lha / Intuisup / source.lha / Library / library_test.c < prev    next >
C/C++ Source or Header  |  1992-04-30  |  28KB  |  824 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: library_test.c
  6.  *    Created ..: Sunday 22-Dec-91 20:35:01
  7.  *    Revision .: 0
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    22-Dec-91   Torsten Jürgeleit      Created this file!
  12.  *
  13.  ****************************************************************************
  14.  *
  15.  *    Test for IntuiSup library
  16.  *
  17.  * $Revision Header ********************************************************/
  18.  
  19.     /* Includes */
  20.  
  21. #include <exec/types.h>
  22. #include <exec/memory.h>
  23. #include <graphics/gfxbase.h>
  24. #include <graphics/text.h>
  25. #include <exec/types.h>
  26. #include <intuition/intuition.h>
  27. #ifdef AZTEC_C
  28. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  29. #endif
  30. #include "intuisup.h"
  31.  
  32.     /* Defines */
  33.  
  34. #define WINDOW_WIDTH        600
  35. #define WINDOW_HEIGHT        180
  36. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL | MENUPICK)
  37. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | ACTIVATE)
  38. #define WINDOW_TITLE        (UBYTE *)" Library test "
  39.  
  40. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  41. #define OPEN_WINDOW_FLAGS    (USHORT)OPEN_WINDOW_FLAG_CENTER_WINDOW
  42.  
  43. #define MESSAGE_LEFT_EDGE    0
  44. #define MESSAGE_TOP_EDGE    (WINDOW_HEIGHT - MESSAGE_HEIGHT - 10)
  45. #define MESSAGE_WIDTH        WINDOW_WIDTH
  46. #define MESSAGE_HEIGHT        8
  47. #define MESSAGE_TEXT1        "Gadget %d text %s"
  48. #define MESSAGE_TEXT2        "Gadget %d value %ld"
  49. #define MESSAGE_TEXT3        " Menu no. %d menu item no. %d sub item no. %d selected "
  50. #define MESSAGE_TEXT_ATTR    &topaz80_attr
  51.  
  52.     /* Globals */
  53.  
  54. struct IntuitionBase  *IntuitionBase;
  55. struct Library        *IntuiSupBase;
  56.  
  57.     /* Statics */
  58.  
  59. STATIC struct NewWindow  test_new_window = {
  60.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 1, WINDOW_IDCMP, WINDOW_FLAGS,
  61.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  62. };
  63. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  64.                            FS_NORMAL, FPF_ROMFONT },
  65.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  66.                            FS_NORMAL, FPF_ROMFONT };
  67.     /* Defines for test gadgets */
  68.  
  69. #define TEST_GADGET_BUTTON        0
  70. #define TEST_GADGET_BUTTON_IMAGE    1
  71. #define TEST_GADGET_CHECK        2
  72. #define TEST_GADGET_MX            3
  73. #define TEST_GADGET_STRING        4
  74. #define TEST_GADGET_INTEGER        5
  75. #define TEST_GADGET_SLIDER_HORIZ    6
  76. #define TEST_GADGET_SLIDER_VERT        7
  77. #define TEST_GADGET_SCROLLER_HORIZ    8
  78. #define TEST_GADGET_SCROLLER_VERT    9
  79. #define TEST_GADGET_CYCLE        10
  80. #define TEST_GADGET_COUNT        11
  81. #define TEST_GADGET_LISTVIEW        12
  82. #define TEST_GADGET_PALETTE        13
  83.  
  84. #define TEST_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  85. #define TEST_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  86. #define TEST_GADGET1_LEFT_EDGE        20
  87. #define TEST_GADGET1_TOP_EDGE        10
  88. #define TEST_GADGET1_WIDTH        ((6 + 2) * 10)
  89. #define TEST_GADGET1_HEIGHT        19
  90. #define TEST_GADGET1_TEXT        "_Button"
  91. #define TEST_GADGET1_TEXT_ATTR        &topaz60_attr
  92.  
  93. #define TEST_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  94. #define TEST_GADGET2_FLAGS        (GADGET_DATA_FLAG_BUTTON_TOGGLE | GADGET_DATA_FLAG_BUTTON_IMAGE | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  95. #define TEST_GADGET2_LEFT_EDGE        120
  96. #define TEST_GADGET2_TOP_EDGE        15
  97. #define TEST_GADGET2_WIDTH        16
  98. #define TEST_GADGET2_HEIGHT        8
  99. #define TEST_GADGET2_TEXT        "_Image"
  100. #define TEST_GADGET2_TEXT_ATTR        &topaz60_attr
  101. #define TEST_GADGET2_NORMAL_RENDER    NULL    /* (LONG)&image1 */
  102. #define TEST_GADGET2_SELECT_RENDER    (BYTE *)&image2
  103.  
  104. #define TEST_GADGET3_TYPE        GADGET_DATA_TYPE_CHECK
  105. #define TEST_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  106. #define TEST_GADGET3_LEFT_EDGE        20
  107. #define TEST_GADGET3_TOP_EDGE        33
  108. #define TEST_GADGET3_WIDTH        0
  109. #define TEST_GADGET3_HEIGHT        0
  110. #define TEST_GADGET3_TEXT        "_Check gadget"
  111. #define TEST_GADGET3_TEXT_ATTR        &topaz60_attr
  112. #define TEST_GADGET3_CHECK_STATE    1
  113.  
  114. #define TEST_GADGET4_TYPE        GADGET_DATA_TYPE_MX
  115. #define TEST_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  116. #define TEST_GADGET4_LEFT_EDGE        20
  117. #define TEST_GADGET4_TOP_EDGE        60
  118. #define TEST_GADGET4_WIDTH        0
  119. #define TEST_GADGET4_HEIGHT        0
  120. #define TEST_GADGET4_TEXT        "Mutual e_xclude gadget"
  121. #define TEST_GADGET4_TEXT_ATTR        &topaz60_attr
  122. #define TEST_GADGET4_SPACING        2
  123. #define TEST_GADGET4_ACTIVE        1
  124. #define TEST_GADGET4_TEXT_ARRAY        &mx_array[0]
  125.  
  126. #define TEST_GADGET5_TYPE        GADGET_DATA_TYPE_STRING
  127. #define TEST_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
  128. #define TEST_GADGET5_LEFT_EDGE        20
  129. #define TEST_GADGET5_TOP_EDGE        103
  130. #define TEST_GADGET5_WIDTH        68
  131. #define TEST_GADGET5_HEIGHT        0
  132. #define TEST_GADGET5_TEXT        "_String gadget"
  133. #define TEST_GADGET5_TEXT_ATTR        &topaz60_attr
  134. #define TEST_GADGET5_INPUT_LEN        10
  135. #define TEST_GADGET5_AUTO_ACTIVATE    ((LONG)TEST_GADGET_INTEGER << 16 | TEST_GADGET_INTEGER)
  136. #define TEST_GADGET5_INPUT_DEFAULT    "Test"
  137.  
  138. #define TEST_GADGET6_TYPE        GADGET_DATA_TYPE_INTEGER
  139. #define TEST_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  140. #define TEST_GADGET6_LEFT_EDGE        (20 + 14 * 10 + 8)
  141. #define TEST_GADGET6_TOP_EDGE        118
  142. #define TEST_GADGET6_WIDTH        68
  143. #define TEST_GADGET6_HEIGHT        0
  144. #define TEST_GADGET6_TEXT        "I_nteger gadget"
  145. #define TEST_GADGET6_TEXT_ATTR        &topaz60_attr
  146. #define TEST_GADGET6_INPUT_LEN        10
  147. #define TEST_GADGET6_AUTO_ACTIVATE    ((LONG)TEST_GADGET_STRING << 16 | TEST_GADGET_STRING)
  148. #define TEST_GADGET6_INPUT_DEFAULT    (BYTE *)123
  149.  
  150. #define TEST_GADGET7_TYPE        GADGET_DATA_TYPE_SLIDER
  151. #define TEST_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  152. #define TEST_GADGET7_LEFT_EDGE        20
  153. #define TEST_GADGET7_TOP_EDGE        135
  154. #define TEST_GADGET7_WIDTH        100
  155. #define TEST_GADGET7_HEIGHT        9
  156. #define TEST_GADGET7_TEXT        "S_lider gadget"
  157. #define TEST_GADGET7_TEXT_ATTR        &topaz60_attr
  158. #define TEST_GADGET7_MIN        -10
  159. #define TEST_GADGET7_MAX        10
  160. #define TEST_GADGET7_LEVEL        0
  161.  
  162. #define TEST_GADGET8_TYPE        GADGET_DATA_TYPE_SLIDER
  163. #define TEST_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_BELOW)
  164. #define TEST_GADGET8_LEFT_EDGE        390
  165. #define TEST_GADGET8_TOP_EDGE        10
  166. #define TEST_GADGET8_WIDTH        18
  167. #define TEST_GADGET8_HEIGHT        50
  168. #define TEST_GADGET8_TEXT        "Sli_der gadget"
  169. #define TEST_GADGET8_TEXT_ATTR        &topaz60_attr
  170. #define TEST_GADGET8_MIN        -10
  171. #define TEST_GADGET8_MAX        10
  172. #define TEST_GADGET8_LEVEL        0
  173.  
  174. #define TEST_GADGET9_TYPE        GADGET_DATA_TYPE_SCROLLER
  175. #define TEST_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  176. #define TEST_GADGET9_LEFT_EDGE        (20 + 15 * 10 + 8)
  177. #define TEST_GADGET9_TOP_EDGE        148
  178. #define TEST_GADGET9_WIDTH        100
  179. #define TEST_GADGET9_HEIGHT        0
  180. #define TEST_GADGET9_TEXT        "Scr_oller gadget"
  181. #define TEST_GADGET9_TEXT_ATTR        &topaz60_attr
  182. #define TEST_GADGET9_VISIBLE        4
  183. #define TEST_GADGET9_TOTAL        20
  184. #define TEST_GADGET9_TOP        (BYTE *)10
  185.  
  186. #define TEST_GADGET10_TYPE        GADGET_DATA_TYPE_SCROLLER
  187. #define TEST_GADGET10_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
  188. #define TEST_GADGET10_LEFT_EDGE        490
  189. #define TEST_GADGET10_TOP_EDGE        24
  190. #define TEST_GADGET10_WIDTH        0
  191. #define TEST_GADGET10_HEIGHT        50
  192. #define TEST_GADGET10_TEXT        "Sc_roller gadget"
  193. #define TEST_GADGET10_TEXT_ATTR        &topaz60_attr
  194. #define TEST_GADGET10_VISIBLE        4
  195. #define TEST_GADGET10_TOTAL        20
  196. #define TEST_GADGET10_TOP        (BYTE *)10
  197.  
  198. #define TEST_GADGET11_TYPE        GADGET_DATA_TYPE_CYCLE
  199. #define TEST_GADGET11_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  200. #define TEST_GADGET11_LEFT_EDGE        265
  201. #define TEST_GADGET11_TOP_EDGE        78
  202. #define TEST_GADGET11_WIDTH        160
  203. #define TEST_GADGET11_HEIGHT        15
  204. #define TEST_GADGET11_TEXT        "C_ycle gadget"
  205. #define TEST_GADGET11_TEXT_ATTR        &topaz60_attr
  206. #define TEST_GADGET11_SPACING        1
  207. #define TEST_GADGET11_ACTIVE        2
  208. #define TEST_GADGET11_TEXT_ARRAY    &text_array[0]
  209.  
  210. #define TEST_GADGET12_TYPE        GADGET_DATA_TYPE_COUNT
  211. #define TEST_GADGET12_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  212. #define TEST_GADGET12_LEFT_EDGE        325
  213. #define TEST_GADGET12_TOP_EDGE        96
  214. #define TEST_GADGET12_WIDTH        80
  215. #define TEST_GADGET12_HEIGHT        12
  216. #define TEST_GADGET12_TEXT        "Co_unt gadget"
  217. #define TEST_GADGET12_TEXT_ATTR        &topaz80_attr
  218. #define TEST_GADGET12_MIN        100
  219. #define TEST_GADGET12_MAX        1000
  220. #define TEST_GADGET12_VALUE        (BYTE *)600
  221.  
  222. #define TEST_GADGET13_TYPE        GADGET_DATA_TYPE_LISTVIEW
  223. #define TEST_GADGET13_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2 | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED)
  224. #define TEST_GADGET13_LEFT_EDGE        370
  225. #define TEST_GADGET13_TOP_EDGE        126
  226. #define TEST_GADGET13_WIDTH        104
  227. #define TEST_GADGET13_HEIGHT        35
  228. #define TEST_GADGET13_TEXT        "List _view gadget"
  229. #define TEST_GADGET13_TEXT_ATTR        &topaz60_attr
  230. #define TEST_GADGET13_SPACING        0
  231. #define TEST_GADGET13_TOP        1
  232. #define TEST_GADGET13_LIST        (BYTE *)&test_list
  233.  
  234. #define TEST_GADGET14_TYPE        GADGET_DATA_TYPE_PALETTE
  235. #define TEST_GADGET14_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  236. #define TEST_GADGET14_LEFT_EDGE        220
  237. #define TEST_GADGET14_TOP_EDGE        23
  238. #define TEST_GADGET14_WIDTH        150
  239. #define TEST_GADGET14_HEIGHT        20
  240. #define TEST_GADGET14_TEXT        "_Palette gadget"
  241. #define TEST_GADGET14_TEXT_ATTR        &topaz60_attr
  242. #define TEST_GADGET14_DEPTH        2
  243. #define TEST_GADGET14_COLOR_OFFSET    0
  244. #define TEST_GADGET14_ACTIVE_COLOR    (BYTE *)0
  245.  
  246.     /* Statics for test gadgets */
  247.  
  248. STATIC UWORD image1_data[] = {
  249.     0xffff, 0x8000, 0xbff0, 0xa00c, 0xa00c, 0xbff0, 0x8000, 0x8000,
  250.     0x0000, 0x0001, 0x0005, 0x1ff1, 0x1ff1, 0x0005, 0x0001, 0x7fff
  251. };
  252. STATIC struct Image  image1 = { 0, 0, 16, 8, 2, &image1_data[0], 3, 0, NULL };
  253. STATIC UWORD image2_data[] = {
  254.     0x0000, 0x000f, 0x3fff, 0x23fd, 0x3fcd, 0x7ff1, 0x7001, 0x7fff,
  255.     0xffff, 0x800e, 0x807e, 0x9ff8, 0x9ff0, 0xfe04, 0xf000, 0x8000
  256. };
  257. STATIC struct Image  image2 = { 0, 0, 16, 8, 2, &image2_data[0], 3, 0, NULL };
  258. STATIC BYTE *mx_array[] = {
  259.     "Fast File System", "Old File System", "Custom File System", NULL
  260. };
  261. STATIC BYTE *text_array[] = {
  262.     "Amiga", "Workbench", "AmigaDOS", "Multitasking", "CLI", "ARexx",
  263.     "TeX", "Unix", NULL
  264. };
  265. STATIC struct List  test_list;
  266. STATIC struct GadgetData  test_gadget_data[] = {
  267.    {
  268.     TEST_GADGET1_TYPE,        /* gd_Type */
  269.     TEST_GADGET1_FLAGS,        /* gd_Flags */
  270.     TEST_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  271.     TEST_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  272.     TEST_GADGET1_WIDTH,        /* gd_Width */
  273.     TEST_GADGET1_HEIGHT,        /* gd_Height */
  274.     TEST_GADGET1_TEXT,        /* *gd_Text */
  275.     TEST_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  276.     { 0, 0, 0 }
  277.    }, {
  278.     TEST_GADGET2_TYPE,        /* gd_Type */
  279.     TEST_GADGET2_FLAGS,        /* gd_Flags */
  280.     TEST_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  281.     TEST_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  282.     TEST_GADGET2_WIDTH,        /* gd_Width */
  283.     TEST_GADGET2_HEIGHT,        /* gd_Height */
  284.     TEST_GADGET2_TEXT,        /* *gd_Text */
  285.     TEST_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  286.     { 0,
  287.     TEST_GADGET2_NORMAL_RENDER,    /* gd_ButtonNormalRender */
  288.     TEST_GADGET2_SELECT_RENDER    /* gd_ButtonSelectRender */
  289.     }
  290.    }, {
  291.     TEST_GADGET3_TYPE,        /* gd_Type */
  292.     TEST_GADGET3_FLAGS,        /* gd_Flags */
  293.     TEST_GADGET3_LEFT_EDGE,        /* gd_LeftEdge */
  294.     TEST_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  295.     TEST_GADGET3_WIDTH,        /* gd_Width */
  296.     TEST_GADGET3_HEIGHT,        /* gd_Height */
  297.     TEST_GADGET3_TEXT,        /* *gd_Text */
  298.     TEST_GADGET3_TEXT_ATTR,        /* *gd_TextAttr */
  299.     {
  300.     TEST_GADGET3_CHECK_STATE,    /* gd_CheckState */
  301.     0, 0 }
  302.    }, {
  303.     TEST_GADGET4_TYPE,        /* gd_Type */
  304.     TEST_GADGET4_FLAGS,        /* gd_Flags */
  305.     TEST_GADGET4_LEFT_EDGE,        /* gd_LeftEdge */
  306.     TEST_GADGET4_TOP_EDGE,        /* gd_TopEdge */
  307.     TEST_GADGET4_WIDTH,        /* gd_Width */
  308.     TEST_GADGET4_HEIGHT,        /* gd_Height */
  309.     TEST_GADGET4_TEXT,        /* *gd_Text */
  310.     TEST_GADGET4_TEXT_ATTR,        /* *gd_TextAttr */
  311.     {
  312.     TEST_GADGET4_SPACING,        /* gd_MXSpacing */
  313.     TEST_GADGET4_ACTIVE,        /* gd_MXActiveEntry */
  314.     TEST_GADGET4_TEXT_ARRAY        /* gd_MXTextArray */
  315.     }
  316.    }, {
  317.     TEST_GADGET5_TYPE,        /* gd_Type */
  318.     TEST_GADGET5_FLAGS,        /* gd_Flags */
  319.     TEST_GADGET5_LEFT_EDGE,        /* gd_LeftEdge */
  320.     TEST_GADGET5_TOP_EDGE,        /* gd_TopEdge */
  321.     TEST_GADGET5_WIDTH,        /* gd_Width */
  322.     TEST_GADGET5_HEIGHT,        /* gd_Height */
  323.     TEST_GADGET5_TEXT,        /* *gd_Text */
  324.     TEST_GADGET5_TEXT_ATTR,        /* *gd_TextAttr */
  325.     {
  326.     TEST_GADGET5_INPUT_LEN,        /* gd_InputLen */
  327.     TEST_GADGET5_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  328.     TEST_GADGET5_INPUT_DEFAULT    /* gd_InputDefault */
  329.     }
  330.    }, {
  331.     TEST_GADGET6_TYPE,        /* gd_Type */
  332.     TEST_GADGET6_FLAGS,        /* gd_Flags */
  333.     TEST_GADGET6_LEFT_EDGE,        /* gd_LeftEdge */
  334.     TEST_GADGET6_TOP_EDGE,        /* gd_TopEdge */
  335.     TEST_GADGET6_WIDTH,        /* gd_Width */
  336.     TEST_GADGET6_HEIGHT,        /* gd_Height */
  337.     TEST_GADGET6_TEXT,        /* *gd_Text */
  338.     TEST_GADGET6_TEXT_ATTR,        /* *gd_TextAttr */
  339.     {
  340.     TEST_GADGET6_INPUT_LEN,        /* gd_InputLen */
  341.     TEST_GADGET6_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  342.     TEST_GADGET6_INPUT_DEFAULT    /* gd_InputDefault */
  343.     }
  344.    }, {
  345.     TEST_GADGET7_TYPE,        /* gd_Type */
  346.     TEST_GADGET7_FLAGS,        /* gd_Flags */
  347.     TEST_GADGET7_LEFT_EDGE,        /* gd_LeftEdge */
  348.     TEST_GADGET7_TOP_EDGE,        /* gd_TopEdge */
  349.     TEST_GADGET7_WIDTH,        /* gd_Width */
  350.     TEST_GADGET7_HEIGHT,        /* gd_Height */
  351.     TEST_GADGET7_TEXT,        /* *gd_Text */
  352.     TEST_GADGET7_TEXT_ATTR,        /* *gd_TextAttr */
  353.     {
  354.     TEST_GADGET7_MIN,        /* gd_SliderMin */
  355.     TEST_GADGET7_MAX,        /* gd_SliderMax */
  356.     TEST_GADGET7_LEVEL        /* gd_SliderLevel */
  357.     }
  358.    }, {
  359.     TEST_GADGET8_TYPE,        /* gd_Type */
  360.     TEST_GADGET8_FLAGS,        /* gd_Flags */
  361.     TEST_GADGET8_LEFT_EDGE,        /* gd_LeftEdge */
  362.     TEST_GADGET8_TOP_EDGE,        /* gd_TopEdge */
  363.     TEST_GADGET8_WIDTH,        /* gd_Width */
  364.     TEST_GADGET8_HEIGHT,        /* gd_Height */
  365.     TEST_GADGET8_TEXT,        /* *gd_Text */
  366.     TEST_GADGET8_TEXT_ATTR,        /* *gd_TextAttr */
  367.     {
  368.     TEST_GADGET8_MIN,        /* gd_SliderMin */
  369.     TEST_GADGET8_MAX,        /* gd_SliderMax */
  370.     TEST_GADGET8_LEVEL        /* gd_SliderLevel */
  371.     }
  372.    }, {
  373.     TEST_GADGET9_TYPE,        /* gd_Type */
  374.     TEST_GADGET9_FLAGS,        /* gd_Flags */
  375.     TEST_GADGET9_LEFT_EDGE,        /* gd_LeftEdge */
  376.     TEST_GADGET9_TOP_EDGE,        /* gd_TopEdge */
  377.     TEST_GADGET9_WIDTH,        /* gd_Width */
  378.     TEST_GADGET9_HEIGHT,        /* gd_Height */
  379.     TEST_GADGET9_TEXT,        /* *gd_Text */
  380.     TEST_GADGET9_TEXT_ATTR,        /* *gd_TextAttr */
  381.     {
  382.     TEST_GADGET9_VISIBLE,        /* gd_ScrollerVisible */
  383.     TEST_GADGET9_TOTAL,        /* gd_ScrollerTotal */
  384.     TEST_GADGET9_TOP        /* gd_ScrollerTop */
  385.     }
  386.    }, {
  387.     TEST_GADGET10_TYPE,        /* gd_Type */
  388.     TEST_GADGET10_FLAGS,        /* gd_Flags */
  389.     TEST_GADGET10_LEFT_EDGE,    /* gd_LeftEdge */
  390.     TEST_GADGET10_TOP_EDGE,        /* gd_TopEdge */
  391.     TEST_GADGET10_WIDTH,        /* gd_Width */
  392.     TEST_GADGET10_HEIGHT,        /* gd_Height */
  393.     TEST_GADGET10_TEXT,        /* *gd_Text */
  394.     TEST_GADGET10_TEXT_ATTR,    /* *gd_TextAttr */
  395.     {
  396.     TEST_GADGET10_VISIBLE,        /* gd_ScrollerVisible */
  397.     TEST_GADGET10_TOTAL,        /* gd_ScrollerTotal */
  398.     TEST_GADGET10_TOP        /* gd_ScrollerTop */
  399.     }
  400.    }, {
  401.     TEST_GADGET11_TYPE,        /* gd_Type */
  402.     TEST_GADGET11_FLAGS,        /* gd_Flags */
  403.     TEST_GADGET11_LEFT_EDGE,    /* gd_LeftEdge */
  404.     TEST_GADGET11_TOP_EDGE,        /* gd_TopEdge */
  405.     TEST_GADGET11_WIDTH,        /* gd_Width */
  406.     TEST_GADGET11_HEIGHT,        /* gd_Height */
  407.     TEST_GADGET11_TEXT,        /* *gd_Text */
  408.     TEST_GADGET11_TEXT_ATTR,    /* *gd_TextAttr */
  409.     {
  410.     TEST_GADGET11_SPACING,        /* gd_CycleSpacing */
  411.     TEST_GADGET11_ACTIVE,        /* gd_CycleActive */
  412.     TEST_GADGET11_TEXT_ARRAY    /* gd_CycleTextArray */
  413.     }
  414.    }, {
  415.     TEST_GADGET12_TYPE,        /* gd_Type */
  416.     TEST_GADGET12_FLAGS,        /* gd_Flags */
  417.     TEST_GADGET12_LEFT_EDGE,    /* gd_LeftEdge */
  418.     TEST_GADGET12_TOP_EDGE,        /* gd_TopEdge */
  419.     TEST_GADGET12_WIDTH,        /* gd_Width */
  420.     TEST_GADGET12_HEIGHT,        /* gd_Height */
  421.     TEST_GADGET12_TEXT,        /* *gd_Text */
  422.     TEST_GADGET12_TEXT_ATTR,    /* *gd_TextAttr */
  423.     {
  424.     TEST_GADGET12_MIN,        /* gd_CountMin */
  425.     TEST_GADGET12_MAX,        /* gd_CountMax */
  426.     TEST_GADGET12_VALUE        /* gd_CountValue */
  427.     }
  428.    }, {
  429.     TEST_GADGET13_TYPE,        /* gd_Type */
  430.     TEST_GADGET13_FLAGS,        /* gd_Flags */
  431.     TEST_GADGET13_LEFT_EDGE,    /* gd_LeftEdge */
  432.     TEST_GADGET13_TOP_EDGE,        /* gd_TopEdge */
  433.     TEST_GADGET13_WIDTH,        /* gd_Width */
  434.     TEST_GADGET13_HEIGHT,        /* gd_Height */
  435.     TEST_GADGET13_TEXT,        /* *gd_Text */
  436.     TEST_GADGET13_TEXT_ATTR,    /* *gd_TextAttr */
  437.     {
  438.     TEST_GADGET13_SPACING,        /* gd_ListViewSpacing */
  439.     TEST_GADGET13_TOP,        /* gd_ListViewTop */
  440.     TEST_GADGET13_LIST        /* gd_ListViewList */
  441.     }
  442.    }, {
  443.     TEST_GADGET14_TYPE,        /* gd_Type */
  444.     TEST_GADGET14_FLAGS,        /* gd_Flags */
  445.     TEST_GADGET14_LEFT_EDGE,    /* gd_LeftEdge */
  446.     TEST_GADGET14_TOP_EDGE,        /* gd_TopEdge */
  447.     TEST_GADGET14_WIDTH,        /* gd_Width */
  448.     TEST_GADGET14_HEIGHT,        /* gd_Height */
  449.     TEST_GADGET14_TEXT,        /* *gd_Text */
  450.     TEST_GADGET14_TEXT_ATTR,    /* *gd_TextAttr */
  451.     {
  452.     TEST_GADGET14_DEPTH,        /* gd_PaletteDepth */
  453.     TEST_GADGET14_COLOR_OFFSET,    /* gd_PaletteColorOffset */
  454.     TEST_GADGET14_ACTIVE_COLOR    /* gd_PaletteActiveColor */
  455.     }
  456.    }, {
  457.     INTUISUP_DATA_END        /* end of gadget data array */
  458.    }
  459. };
  460.     /* Defines for auto request */
  461.  
  462. #define TEST1_AUTO_REQ_TITLE        " Auto Request "
  463. #define TEST1_AUTO_REQ_BODY_TEXT    "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4"
  464. #define TEST1_AUTO_REQ_POS_TEXT        "_Positive"
  465. #define TEST1_AUTO_REQ_NEG_TEXT        "_Negative"
  466. #define TEST1_AUTO_REQ_FLAGS        (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_MOVE_POINTER_NEG | AUTO_REQ_FLAG_DRAW_RASTER)
  467.  
  468.     /* Defines for requester */
  469.  
  470. #define TEST2_REQ_WIDTH        200
  471. #define TEST2_REQ_HEIGHT    100
  472. #define TEST2_REQ_FLAGS        (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER | REQ_DATA_FLAG_INNER_WINDOW)
  473. #define TEST2_REQ_TITLE        " Requester "
  474.  
  475. #define TEST2_TEXT1_TYPE    TEXT_DATA_TYPE_TEXT
  476. #define TEST2_TEXT1_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
  477. #define TEST2_TEXT1_LEFT_EDGE    0
  478. #define TEST2_TEXT1_TOP_EDGE    20
  479. #define TEST2_TEXT1_TEXT    "Text Line 1"
  480. #define TEST2_TEXT1_TEXT_ATTR    &topaz60_attr
  481.  
  482. #define TEST2_TEXT2_TYPE    TEXT_DATA_TYPE_TEXT
  483. #define TEST2_TEXT2_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
  484. #define TEST2_TEXT2_LEFT_EDGE    0
  485. #define TEST2_TEXT2_TOP_EDGE    (TEST2_TEXT1_TOP_EDGE + 10)
  486. #define TEST2_TEXT2_TEXT    "Text Line 2"
  487. #define TEST2_TEXT2_TEXT_ATTR    &topaz80_attr
  488.  
  489. #define TEST2_TEXT3_TYPE    TEXT_DATA_TYPE_TEXT
  490. #define TEST2_TEXT3_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
  491. #define TEST2_TEXT3_LEFT_EDGE    0
  492. #define TEST2_TEXT3_TOP_EDGE    (TEST2_TEXT2_TOP_EDGE + 10)
  493. #define TEST2_TEXT3_TEXT    "Text Line 3"
  494. #define TEST2_TEXT3_TEXT_ATTR    &topaz80_attr
  495.  
  496. #define TEST2_BORDER1_TYPE        BORDER_DATA_TYPE_BOX2_OUT
  497. #define TEST2_BORDER1_LEFT_EDGE        20
  498. #define TEST2_BORDER1_TOP_EDGE        10
  499. #define TEST2_BORDER1_WIDTH        (TEST2_REQ_WIDTH - 2 * TEST2_BORDER1_LEFT_EDGE)
  500. #define TEST2_BORDER1_HEIGHT        (TEST2_REQ_HEIGHT - (3 * TEST2_BORDER1_TOP_EDGE + TEST2_GADGET1_HEIGHT))
  501.  
  502. #define TEST2_GADGET_CONTINUE        0
  503.  
  504. #define TEST2_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  505. #define TEST2_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
  506. #define TEST2_GADGET1_LEFT_EDGE        ((TEST2_REQ_WIDTH - TEST2_GADGET1_WIDTH) / 2)
  507. #define TEST2_GADGET1_TOP_EDGE        (TEST2_REQ_HEIGHT - (TEST2_GADGET1_HEIGHT + 10))
  508. #define TEST2_GADGET1_WIDTH        ((8 + 2) * 10)
  509. #define TEST2_GADGET1_HEIGHT        19
  510. #define TEST2_GADGET1_TEXT        "_Continue"
  511. #define TEST2_GADGET1_TEXT_ATTR        &topaz60_attr
  512.  
  513.     /* Statics for test borders */
  514.  
  515. STATIC struct TextData  test2_text_data[] = {
  516.    {
  517.     TEST2_TEXT1_TYPE,    /* td_Type */
  518.     TEST2_TEXT1_FLAGS,    /* td_Flags */
  519.     TEST2_TEXT1_LEFT_EDGE,    /* td_LeftEdge */
  520.     TEST2_TEXT1_TOP_EDGE,    /* td_TopEdge */
  521.     TEST2_TEXT1_TEXT,    /* *td_Text */
  522.     TEST2_TEXT1_TEXT_ATTR    /* *td_TextAttr */
  523.    }, {
  524.     TEST2_TEXT2_TYPE,    /* td_Type */
  525.     TEST2_TEXT2_FLAGS,    /* td_Flags */
  526.     TEST2_TEXT2_LEFT_EDGE,    /* td_LeftEdge */
  527.     TEST2_TEXT2_TOP_EDGE,    /* td_TopEdge */
  528.     TEST2_TEXT2_TEXT,    /* *td_Text */
  529.     TEST2_TEXT2_TEXT_ATTR    /* *td_TextAttr */
  530.    }, {
  531.     TEST2_TEXT3_TYPE,    /* td_Type */
  532.     TEST2_TEXT3_FLAGS,    /* td_Flags */
  533.     TEST2_TEXT3_LEFT_EDGE,    /* td_LeftEdge */
  534.     TEST2_TEXT3_TOP_EDGE,    /* td_TopEdge */
  535.     TEST2_TEXT3_TEXT,    /* *td_Text */
  536.     TEST2_TEXT3_TEXT_ATTR    /* *td_TextAttr */
  537.    }, {
  538.     INTUISUP_DATA_END        /* mark end of border data array */
  539.    }
  540. };
  541. STATIC struct BorderData  test2_border_data[] = {
  542.    {
  543.     TEST2_BORDER1_TYPE,        /* bd_Type */
  544.     TEST2_BORDER1_LEFT_EDGE,    /* bd_LeftEdge */
  545.     TEST2_BORDER1_TOP_EDGE,        /* bd_TopEdge */
  546.     TEST2_BORDER1_WIDTH,        /* bd_Width */
  547.     TEST2_BORDER1_HEIGHT        /* bd_Height */
  548.    }, {
  549.     INTUISUP_DATA_END        /* mark end of border data array */
  550.    }
  551. };
  552. STATIC struct GadgetData  test2_gadget_data[] = {
  553.    {
  554.     TEST2_GADGET1_TYPE,        /* gd_Type */
  555.     TEST2_GADGET1_FLAGS,        /* gd_Flags */
  556.     TEST2_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  557.     TEST2_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  558.     TEST2_GADGET1_WIDTH,        /* gd_Width */
  559.     TEST2_GADGET1_HEIGHT,        /* gd_Height */
  560.     TEST2_GADGET1_TEXT,        /* *gd_Text */
  561.     TEST2_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  562.     { 0, 0, 0 }
  563.    }, {
  564.     INTUISUP_DATA_END        /* mark end of border data array */
  565.    }
  566. };
  567. STATIC struct RequesterData  test2_requester_data = {
  568.     0,            /* rd_LeftEdge */
  569.     0,            /* rd_TopEdge */
  570.     TEST2_REQ_WIDTH,    /* rd_Width */
  571.     TEST2_REQ_HEIGHT,    /* rd_Height */
  572.     TEST2_REQ_FLAGS,    /* rd_Flags */
  573.     TEST2_REQ_TITLE,    /* *rd_Title */
  574.     &test2_text_data[0],    /* *rd_Texts */
  575.     &test2_border_data[0],    /* *rd_Borders */
  576.     &test2_gadget_data[0]    /* *rd_Gadgets */
  577. };
  578.     /* Defines for test menus */
  579.  
  580. #define TEST_MENU_TEXT_ATTR    &topaz60_attr
  581.  
  582.     /* Statics for test menus */
  583.  
  584. STATIC struct MenuData  test_menu_data[] = {
  585.    {
  586.     MENU_DATA_TYPE_TITLE, 0, "Menu 0", NULL, 0
  587.    }, {
  588.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE | MENU_DATA_FLAG_SELECTED, "Item 0.0", "0", ~(1L << 0)
  589.    }, {
  590.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE, "Item 0.1", "1", ~(1L << 1)
  591.    }, {
  592.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 0.2", NULL, 0
  593.    }, {
  594.           MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.0", "A", 0
  595.    }, {
  596.           MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.1", "B", 0
  597.    }, {
  598.        MENU_DATA_TYPE_ITEM, 0, "Item 0.3", NULL, 0
  599.    }, {
  600.     MENU_DATA_TYPE_TITLE,  0, "Menu 1", NULL, 0
  601.    }, {
  602.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 1.0", "C", 0
  603.    }, {
  604.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.1", "D", 0
  605.    }, {
  606.        MENU_DATA_TYPE_ITEM, 0, "Item 1.2", NULL, 0
  607.    }, {
  608.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.0", "E", 0
  609.    }, {
  610.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.1", "F", 0
  611.    }, {
  612.        MENU_DATA_TYPE_ITEM, 0, "Item 1.3", NULL, 0
  613.    }, {
  614.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.3.0", "G", 0
  615.    }, {
  616.           MENU_DATA_TYPE_SUBITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.3.1", "H", 0
  617.    }, {
  618.        MENU_DATA_TYPE_ITEM, 0, "Item 1.4", "I", 0
  619.    }, {
  620.     INTUISUP_DATA_END        /* mark end of menu data */
  621.    }
  622. };
  623.     /* Prototypes */
  624.  
  625. VOID test_action(APTR ri, struct Window  *win, APTR gl, APTR ml);
  626. BOOL build_test_list(VOID);
  627. VOID free_test_list(VOID);
  628.  
  629.     /* Library test */
  630.  
  631.    LONG
  632. main(VOID)
  633. {
  634.    struct Window  *win;
  635.    APTR ri, gl, ml;
  636.  
  637.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  638.       if (IntuiSupBase = OpenLibrary(IntuiSupName, IntuiSupVersion)) {
  639.      if (build_test_list() == TRUE) {
  640.         if (ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) {
  641.            if (win = IOpenWindow(ri, &test_new_window,
  642.                                OPEN_WINDOW_FLAGS)) {
  643.           test_gadget_data[TEST_GADGET_BUTTON_IMAGE].gd_SpecialData.gd_ButtonData.gd_ButtonNormalRender = &image1;
  644.           if (gl = ICreateGadgets(ri, &test_gadget_data[0], 0, 0,
  645.                                     NULL)) {
  646.              if (ml = ICreateMenu(ri, win, &test_menu_data[0],
  647.                            TEST_MENU_TEXT_ATTR, NULL)) {
  648.             IDisplayGadgets(win, gl);
  649.             IAttachMenu(win, ml);
  650.             test_action(ri, win, gl, ml);
  651.             IRemoveMenu(ml);
  652.             IRemoveGadgets(gl);
  653.             IFreeMenu(ml);
  654.              }
  655.              IFreeGadgets(gl);
  656.           }
  657.           ICloseWindow(win, FALSE);
  658.            }
  659.            IFreeRenderInfo(ri);
  660.         }
  661.         free_test_list();
  662.      }
  663.      CloseLibrary(IntuiSupBase);
  664.       }
  665.       CloseLibrary(IntuitionBase);
  666.    }
  667.    return(0L);
  668. }
  669.     /* Perform IDCMP action */
  670.  
  671.    VOID
  672. test_action(APTR ri, struct Window  *win, APTR gl, APTR ml)
  673. {
  674.    struct MsgPort  *up = win->UserPort;
  675.    BOOL input = TRUE, keepon2 = TRUE;
  676.  
  677.    /* Waiting for close window event */
  678.    do {
  679.       struct IntuiMessage  *msg2;
  680.  
  681.       WaitPort(up);
  682.       while (msg2 = IGetMsg(up)) {
  683.      BYTE   *format, buffer[80];
  684.      USHORT code = msg2->Code;
  685.  
  686.      switch (msg2->Class) {
  687.         case CLOSEWINDOW :
  688.            keepon2 = FALSE;
  689.            break;
  690.  
  691.         case ISUP_ID :
  692.            if (code == TEST_GADGET_STRING) {
  693.           format = MESSAGE_TEXT1;
  694.            } else {
  695.           format = MESSAGE_TEXT2;
  696.            }
  697.            sprintf(&buffer[0], format, code, msg2->IAddress);
  698.            IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  699.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  700.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  701.            IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  702.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  703.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  704.            /* Change gadgets */
  705.            switch (code) {
  706.           case TEST_GADGET_CHECK :
  707.              if (msg2->IAddress) {
  708.             ISetGadgetAttributes(gl, TEST_GADGET_LISTVIEW,
  709.                           GADGET_DATA_FLAG_DISABLED, 0L,
  710.                 USE_CURRENT_VALUE, (ULONG)TEST_GADGET13_TOP,
  711.                         (VOID *)TEST_GADGET13_LIST);
  712.              } else {
  713.             ISetGadgetAttributes(gl, TEST_GADGET_LISTVIEW,
  714.                           GADGET_DATA_FLAG_DISABLED,
  715.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  716.                        USE_CURRENT_VALUE, (VOID *)NULL);
  717.              }
  718.              break;
  719.  
  720.           case TEST_GADGET_BUTTON :
  721.              if (input == FALSE) {
  722.             ISetGadgetAttributes(gl, TEST_GADGET_INTEGER,
  723.                GADGET_DATA_FLAG_DISABLED, 0L, USE_CURRENT_VALUE,
  724.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  725.             input = TRUE;
  726.              } else {
  727.             ISetGadgetAttributes(gl, TEST_GADGET_INTEGER,
  728.                           GADGET_DATA_FLAG_DISABLED,
  729.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  730.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  731.             input = FALSE;
  732.              }
  733.              break;
  734.  
  735.           case TEST_GADGET_BUTTON_IMAGE :
  736.              if (msg2->IAddress) {
  737.             IAutoRequest(win, TEST1_AUTO_REQ_TITLE,
  738.                            TEST1_AUTO_REQ_BODY_TEXT,
  739.                             TEST1_AUTO_REQ_POS_TEXT,
  740.                         TEST1_AUTO_REQ_NEG_TEXT, 0L, 0L,
  741.                         TEST1_AUTO_REQ_FLAGS, NULL);
  742.              } else {
  743.             APTR rl;
  744.  
  745.             if (rl = IDisplayRequester(win,
  746.                          &test2_requester_data, NULL)) {
  747.                BOOL keepon1 = TRUE;
  748.  
  749.                do {
  750.                   struct IntuiMessage  *msg1;
  751.  
  752.                   WaitPort(up);
  753.                   while (msg1 = IGetMsg(up)) {
  754.                  if (msg1->Class == ISUP_ID) {
  755.                     keepon1 = FALSE;
  756.                  }
  757.                  IReplyMsg(msg1);
  758.                   }
  759.                } while (keepon1 == TRUE);
  760.                IRemoveRequester(rl);
  761.             }
  762.              }
  763.              break;
  764.            }
  765.            break;
  766.  
  767.         case MENUPICK :
  768.            while (code != MENUNULL) {
  769.           sprintf(&buffer[0], MESSAGE_TEXT3,
  770.                   (MENUNUM(code) != NOMENU ? MENUNUM(code) : 0),
  771.                   (ITEMNUM(code) != NOITEM ? ITEMNUM(code) : 0),
  772.                 (SUBNUM(code) != NOSUB ? SUBNUM(code) : 0));
  773.           IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  774.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  775.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  776.           IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  777.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  778.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  779.           code = IMenuItemAddress(ml, code)->NextSelect;
  780.            }
  781.            break;
  782.      }
  783.      IReplyMsg(msg2);
  784.       }
  785.    } while (keepon2 == TRUE);
  786. }
  787.     /* Build test list */
  788.  
  789.    BOOL
  790. build_test_list(VOID)
  791. {
  792.    struct List  *list = &test_list;
  793.    BYTE *text, **ptr = &text_array[0];
  794.    BOOL success = TRUE;
  795.  
  796.    NewList(list);
  797.    while (text = *ptr++) {
  798.       struct Node  *node;
  799.  
  800.       if (node = AllocMem((LONG)sizeof(struct Node),
  801.                       (LONG)MEMF_PUBLIC | MEMF_CLEAR)) {
  802.      node->ln_Name = text;
  803.      AddTail(list, node);
  804.       } else {
  805.      free_test_list();
  806.      success = FALSE;
  807.      break;
  808.       }
  809.    }
  810.    return(success);
  811. }
  812.     /* Free test list */
  813.  
  814.    VOID
  815. free_test_list(VOID)
  816. {
  817.    struct List  *list = &test_list;
  818.    struct Node  *node;
  819.  
  820.    while (node = RemHead(list)) {
  821.       FreeMem(node, (LONG)sizeof(struct Node));
  822.    }
  823. }
  824.